/**
 * 仓库管理员以数组stock形式记录商品库存表，其中stock[i]表示对应商品库存余量。请返回库存余量最少的cnt个商品余量，返回顺序不同
 * 示例1: 
 *  输入: stock = [2, 5, 7, 4], cnt = 1
 *  输出: [2]
 * 示例2:
 *  输入: stock = [0, 2, 3, 6], cnt = 2
 *  输出: [0, 2]或者[2, 0]
*/
function inventoryManagement (arr, k) {
    const maxValue = 10000; // 桶数组的最大值
    const bucket = new Array(maxValue); // 桶
    let index = 0; // 目标数组下标
    // 为桶得下标赋值
    for (let i = 0; i < arr.length; i++) {
        if (!bucket[arr[i]]) {
            bucket[arr[i]] = 1;
        } else {
            bucket[arr[i]]++;
        }
    }
    // 目标数组
    const res = [];
    // 遍历桶数组
    for (let j = 0; j < maxValue; j++) {
        // 用while的原因是有可能有重复的数组
        while (bucket[j]-- && index++ < k) {
            res.push(j);
        }
        // 如果满足要返回的数组个数则不用再遍历了
        if (index >= k) {
            break;
        }
    }
    return res;
}

console.log(inventoryManagement([2, 5, 7, 4], 1));
console.log(inventoryManagement([0, 2, 3, 6], 2));